//
//  myDataAccess.m
//  giuseppe
//
//  Created by Apple on 15/8/17.
//  Copyright (c) 2015年 GiantUmbrella. All rights reserved.
//

#import "myDataAccess.h"


@interface myDataAccess ()
@property (nonatomic,strong) AFHTTPRequestOperationManager *manager;

@end


@implementation myDataAccess

static myDataAccess * webUtil = nil;

+ (myDataAccess *) shardWebUtil
{
    @synchronized([myDataAccess class])
    {
        if (!webUtil) {
            webUtil = [[[self class] alloc] init];
        }
        
        return webUtil;
    }
    
    return nil;
}

// 正则判断手机号码地址格式
+ (BOOL)isMobileNumber:(NSString *)mobileNumber {
    /**
     * 手机号码
     * 移动：134[0-8],135,136,137,138,139,150,151,157,158,159,182,187,188
     * 联通：130,131,132,152,155,156,185,186
     * 电信：133,1349,153,180,189
     */
    NSString * MOBILE = @"^1(3[0-9]|5[0-35-9]|8[025-9])\\d{8}$";
    /**
     10         * 中国移动：China Mobile
     11         * 134[0-8],135,136,137,138,139,150,151,157,158,159,182,187,188
     12         */
    NSString * CM = @"^1(34[0-8]|(3[5-9]|5[017-9]|8[278])\\d)\\d{7}$";
    /**
     15         * 中国联通：China Unicom
     16         * 130,131,132,152,155,156,185,186
     17         */
    NSString * CU = @"^1(3[0-2]|5[256]|8[56])\\d{8}$";
    /**
     20         * 中国电信：China Telecom
     21         * 133,1349,153,180,189
     22         */
    NSString * CT = @"^1((33|53|8[09])[0-9]|349)\\d{7}$";
    /**
     25         * 大陆地区固话及小灵通
     26         * 区号：010,020,021,022,023,024,025,027,028,029
     27         * 号码：七位或八位
     28         */
    // NSString * PHS = @"^0(10|2[0-5789]|\\d{3})\\d{7,8}$";
    
    NSPredicate *regextestmobile = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", MOBILE];
    NSPredicate *regextestcm = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CM];
    NSPredicate *regextestcu = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CU];
    NSPredicate *regextestct = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CT];
    
    if (([regextestmobile evaluateWithObject:mobileNumber] == YES)
        || ([regextestcm evaluateWithObject:mobileNumber] == YES)
        || ([regextestct evaluateWithObject:mobileNumber] == YES)
        || ([regextestcu evaluateWithObject:mobileNumber] == YES))
    {
        if([regextestcm evaluateWithObject:mobileNumber] == YES) {
            NSLog(@"China Mobile");
        } else if([regextestct evaluateWithObject:mobileNumber] == YES) {
            NSLog(@"China Telecom");
        } else if ([regextestcu evaluateWithObject:mobileNumber] == YES) {
            NSLog(@"China Unicom");
        } else {
            NSLog(@"Unknow");
        }
        
        return YES;
    }
    else{
        
        return NO;
    }
    
    return  YES;
}


#pragma mark - AFnetworking manager getter

- (AFHTTPRequestOperationManager *) manager {
    
    if (!_manager) {
        
        _manager = [AFHTTPRequestOperationManager manager];
        _manager.responseSerializer = [AFHTTPResponseSerializer serializer];
    }
    
    return _manager;
}

#pragma mark - login
//登陆
- (void) loginUsingWithURLString:(NSString *) urlString  andParas:(id) params andTransferGottenData:(transferValue) transfer{
    
    [self.manager POST:urlString parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
        
        NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:operation.responseData options:0 error:nil];
        
        NSLog(@"服务器返回数据为:%@ and 消息内容是:%@",dic,dic[@"error"]);
        transfer(dic,nil);
        
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        
        transfer(nil,error);
        NSLog(@"下载 错误:%@",error);
    }];
    
}


//注册
- (void) registerUsingWithURLString:(NSString *) urlString  andParas:(id) params andTransferGottenData:(transferValue) transfer{
    
    [self.manager POST:urlString parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
        
        NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:operation.responseData options:0 error:nil];
        
        NSLog(@"服务器返回数据为:%@ and 消息内容是:%@",dic,dic[@"error"]);
        transfer(dic,nil);
        
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        
        transfer(nil,error);
        NSLog(@"下载 错误:%@",error);
    }];
    
}

//忘记密码
- (void) telPhoneFindPasswordUsingWithURLString:(NSString *) urlString  andParas:(id) params andTransferGottenData:(transferValue) transfer{
    [self.manager POST:urlString parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
        
        NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:operation.responseData options:0 error:nil];
        
        NSLog(@"服务器返回数据为:%@ and 消息内容是:%@",dic,dic[@"error"]);
        transfer(dic,nil);
        
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        
        transfer(nil,error);
        NSLog(@"下载 错误:%@",error);
    }];
}

//获取学校列表
- (void) gettingSchoolListsUsingWithURLString:(NSString *) urlString  andParas:(id) params andTransferGottenData:(transferValue) transfer{
    
    [self.manager POST:urlString parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
        
        NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:operation.responseData options:0 error:nil];
        
        NSLog(@"服务器返回数据为:%@ and 消息内容是:%@",dic,dic[@"error"]);
        transfer(dic,nil);
        
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        
        transfer(nil,error);
        NSLog(@"下载 错误:%@",error);
    }];
}

//获取验证码
- (void) gettingCheckNumberUsingWithURLString:(NSString *) urlString  andParas:(id) params andTransferGottenData:(transferValue) transfer{
    
    [self.manager POST:urlString parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
        
        NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:operation.responseData options:0 error:nil];
        
        NSLog(@"服务器返回数据为:%@ and 消息内容是:%@",dic,dic[@"error"]);
        transfer(dic,nil);
        
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        
        transfer(nil,error);
        NSLog(@"下载 错误:%@",error);
    }];}


#pragma mark - homePage
//首页
- (void) gettingHomePageInfoWithURLString:(NSString *) urlString  andParas:(id) params andTransferGottenData:(transferValue) transfer{
    
    [self.manager POST:urlString parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
        
        NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:operation.responseData options:0 error:nil];
        
        NSLog(@"服务器返回数据为:%@ and 消息内容是:%@",dic,dic[@"error"]);
        transfer(dic,nil);
        
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        
        transfer(nil,error);
        NSLog(@"下载 错误:%@",error);
    }];

}


//消息
- (void) gettingMessageWithURLString:(NSString *) urlString  andParas:(id) params andTransferGottenData:(transferValue) transfer{
    
    
    [self.manager POST:urlString parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
        
        NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:operation.responseData options:0 error:nil];
        
        NSLog(@"服务器返回数据为:%@ and 消息内容是:%@",dic,dic[@"error"]);
        transfer(dic,nil);
        
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        
        transfer(nil,error);
        NSLog(@"下载 错误:%@",error);
    }];

}



//商品详情
- (void) goodsDetailsWithURLString:(NSString *) urlString  andParas:(id) params andTransferGottenData:(transferValue) transfer{
    
    [self.manager POST:urlString parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
        
        NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:operation.responseData options:0 error:nil];
        
        NSLog(@"服务器返回数据为:%@ and 消息内容是:%@",dic,dic[@"error"]);
        transfer(dic,nil);
        
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        
        transfer(nil,error);
        NSLog(@"下载 错误:%@",error);
    }];

}



//商品选择尺码
- (void) selectSizeWithURLString:(NSString *) urlString  andParas:(id) params andTransferGottenData:(transferValue) transfer{
    
    [self.manager POST:urlString parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
        
        NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:operation.responseData options:0 error:nil];
        
        NSLog(@"服务器返回数据为:%@ and 消息内容是:%@",dic,dic[@"error"]);
        transfer(dic,nil);
        
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        
        transfer(nil,error);
        NSLog(@"下载 错误:%@",error);
    }];
}

//收货地址管理
- (void) addressManagerWithURLString:(NSString *) urlString  andParas:(id) params andTransferGottenData:(transferValue) transfer{
    
    
    [self.manager POST:urlString parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
        
        NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:operation.responseData options:0 error:nil];
        
        NSLog(@"服务器返回数据为:%@ and 消息内容是:%@",dic,dic[@"error"]);
        transfer(dic,nil);
        
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        
        transfer(nil,error);
        NSLog(@"下载 错误:%@",error);
    }];
    
}


//订单支付
- (void) orderPaymentWithURLString:(NSString *) urlString  andParas:(id) params andTransferGottenData:(transferValue) transfer{
    
    [self.manager POST:urlString parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
        
        NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:operation.responseData options:0 error:nil];
        
        NSLog(@"服务器返回数据为:%@ and 消息内容是:%@",dic,dic[@"error"]);
        transfer(dic,nil);
        
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        
        transfer(nil,error);
        NSLog(@"下载 错误:%@",error);
    }];

}


//收藏商品
- (void) addtoFavoriteListsWithURLString:(NSString *) urlString  andParas:(id) params andTransferGottenData:(transferValue) transfer{
    
    [self.manager POST:urlString parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
        
        NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:operation.responseData options:0 error:nil];
        
        NSLog(@"服务器返回数据为:%@ and 消息内容是:%@",dic,dic[@"error"]);
        transfer(dic,nil);
        
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        
        transfer(nil,error);
        NSLog(@"下载 错误:%@",error);
    }];
}

#pragma mark - userInfo
//个人中心首页
- (void) userCenterHomeWithURLString:(NSString *) urlString  andParas:(id) params andTransferGottenData:(transferValue) transfer{
    
    [self.manager POST:urlString parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
        
        NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:operation.responseData options:0 error:nil];
        
        NSLog(@"服务器返回数据为:%@ and 消息内容是:%@",dic,dic[@"error"]);
        transfer(dic,nil);
        
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        
        transfer(nil,error);
        NSLog(@"下载 错误:%@",error);
    }];
}

//个人中心
- (void) userInfoManagementWithURLString:(NSString *) urlString  andParas:(id) params andTransferGottenData:(transferValue) transfer{
    
    [self.manager POST:urlString parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
        
        NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:operation.responseData options:0 error:nil];
        
        NSLog(@"服务器返回数据为:%@ and 消息内容是:%@",dic,dic[@"error"]);
        transfer(dic,nil);
        
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        
        transfer(nil,error);
        NSLog(@"下载 错误:%@",error);
    }];
}

//切换账户
- (void) changeUserWithURLString:(NSString *) urlString  andParas:(id) params andTransferGottenData:(transferValue) transfer{
    
    
    [self.manager POST:urlString parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
        
        NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:operation.responseData options:0 error:nil];
        
        NSLog(@"服务器返回数据为:%@ and 消息内容是:%@",dic,dic[@"error"]);
        transfer(dic,nil);
        
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        
        transfer(nil,error);
        NSLog(@"下载 错误:%@",error);
    }];
}

//收藏夹
- (void) favoriteListsManagementWithURLString:(NSString *) urlString  andParas:(id) params andTransferGottenData:(transferValue) transfer{
    
    
    [self.manager POST:urlString parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
        
        NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:operation.responseData options:0 error:nil];
        
        NSLog(@"服务器返回数据为:%@ and 消息内容是:%@",dic,dic[@"error"]);
        transfer(dic,nil);
        
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        
        transfer(nil,error);
        NSLog(@"下载 错误:%@",error);
    }];
}

//订单信息
- (void) orderListsManagementWithURLString:(NSString *) urlString  andParas:(id) params andTransferGottenData:(transferValue) transfer{
    
    
    [self.manager POST:urlString parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
        
        NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:operation.responseData options:0 error:nil];
        
        NSLog(@"服务器返回数据为:%@ and 消息内容是:%@",dic,dic[@"error"]);
        transfer(dic,nil);
        
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        
        transfer(nil,error);
        NSLog(@"下载 错误:%@",error);
    }];
}

//确认收货
- (void) orderConfirmWithURLString:(NSString *) urlString  andParas:(id) params andTransferGottenData:(transferValue) transfer{
    
    
    [self.manager POST:urlString parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
        
        NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:operation.responseData options:0 error:nil];
        
        NSLog(@"服务器返回数据为:%@ and 消息内容是:%@",dic,dic[@"error"]);
        transfer(dic,nil);
        
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        
        transfer(nil,error);
        NSLog(@"下载 错误:%@",error);
    }];
}
//商品评价
- (void) orderCommentsWithURLString:(NSString *) urlString  andParas:(id) params andTransferGottenData:(transferValue) transfer{
    
    
    [self.manager POST:urlString parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
        
        NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:operation.responseData options:0 error:nil];
        
        NSLog(@"服务器返回数据为:%@ and 消息内容是:%@",dic,dic[@"error"]);
        transfer(dic,nil);
        
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        
        transfer(nil,error);
        NSLog(@"下载 错误:%@",error);
    }];
    
}


#pragma mark - shoppingCart

//添加购物车
- (void) addtoShoppingCartWithURLString:(NSString *) urlString  andParas:(id) params andTransferGottenData:(transferValue) transfer{
    
    
    [self.manager POST:urlString parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
        
        NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:operation.responseData options:0 error:nil];
        
        NSLog(@"服务器返回数据为:%@ and 消息内容是:%@",dic,dic[@"error"]);
        transfer(dic,nil);
        
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        
        transfer(nil,error);
        NSLog(@"下载 错误:%@",error);
    }];
}

//购物车商品查看
- (void) shoppingCartListsWithURLString:(NSString *) urlString  andParas:(id) params andTransferGottenData:(transferValue) transfer{
    
    
    [self.manager POST:urlString parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
        
        NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:operation.responseData options:0 error:nil];
        
        NSLog(@"服务器返回数据为:%@ and 消息内容是:%@",dic,dic[@"error"]);
        transfer(dic,nil);
        
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        
        transfer(nil,error);
        NSLog(@"下载 错误:%@",error);
    }];
}


@end
